High availability (HA) is one of the basic requirements for nowadays enterprise applications. Enterprise systems operating today are subject to continuous program execution, that is 24 hours a day and 7 days a week. There is no longer the concept of “overnight” or “planned downtime.” All programs and data must be available at any point during the day and night. Any outages or deteriorated service can result in loss of revenue as customers simply take their business elsewhere, and the enterprise stops to function on a global scale.
Databases vendors may use several different strategies to implement high availability for a data storage system. The implementation of high availability for a data storage is a complex technical problem and uses strategies that typically require special and expensive hardware or a special configuration of databases that brings limitations for the provided features. High availability may be provided to an application when it is able to survive, for example, a crash on the database server that stores data for the application.
A traditional approach of providing high availability to an application uses a storage area network (SAN). A SAN is a high performance dedicated network used primarily to provide fast and reliable communication between computers and storage devices in a shared storage networking environment. The SAN also enables a storage device to communicate with another storage device. Software solutions at the database level, however, are complex and expensive. For example, a database within a cluster may be a “share everything” database in which all data files, control files, and redo log files used by the database reside on a shared storage that is accessible by all other database instances. This traditional approach is typically expensive and proprietary.